# Author:sp
# CreaTime: $(DATE)
# FileName: $(NAME)
# Description: simple introdution of the code
'''对于变量作用域，变量的访问以 L（Local） –> E（Enclosing） –> G（Global） –>B（Built-in） 的规则查找，
即：在局部找不到，便会去局部外的局部找（例如闭包），再找不到就会去全局找，再者去内建中找。
观察以下几个例子，均从内部函数输出变量 x：'''
#1. 局部作用域
x = int(3.3)
x = 0
def outer():
    x = 1
    def inner():
        x = 2
        print(x)
    inner()
outer()
#2.闭包函数外的函数中
x = int(3.3)
x = 0
def outer():
    x = 1
    def inner():
        i = 2
        print(x)
    inner()
outer()
#3.全局作用域
x = int(3.3)
x = 0
def outer():
    o = 1
    def inner():
        i = 2
        print(x)
    inner()
outer()
#4. 内建作用域
x = int(3.3)
g = 0
def outer():
    o = 1
    def inner():
        i = 2
        print(x)
    inner()
outer()